﻿using System;
using System.Collections.Generic;
using System.Text;
using System.ServiceModel;
using com.clinica.business.BE.gescot;
using com.clinica.business.BE.comun;
using com.clinica.business.BL.interfaces.gescot;
using com.clinica.config;

namespace LiclCotizacion
{
    public class LiclCotizacionController
    {
         BeginConfig config = new BeginConfig();
         public LiclCotizacionController()
        { 
        
        }
         public List<CotizacionBE> Obtener_ListadoCotizaciones(CotizacionBE oRequest, DateTime dtFecha_Inicio, DateTime dtFecha_Fin)
        {
            ChannelFactory<ICotizacionBL> factory = null;
            using (factory = new ChannelFactory<ICotizacionBL>(config.Context + "Cotizacion"))
            {
                ICotizacionBL oParm = factory.CreateChannel();
                List<CotizacionBE> lst = oParm.ObternerSolCotizaciones(oRequest, dtFecha_Inicio, dtFecha_Fin);
                factory.Close();
                return lst;
            }
        }
         public List<CotizacionBE> Obtener_ListadoCotizaciones_Estado(CotizacionBE oRequest, DateTime dtFecha_Inicio, DateTime dtFecha_Fin)
         {
             ChannelFactory<ICotizacionBL> factory = null;
             using (factory = new ChannelFactory<ICotizacionBL>(config.Context + "Cotizacion"))
             {
                 ICotizacionBL oParm = factory.CreateChannel();
                 List<CotizacionBE> lst = oParm.ObternerSolCotizaciones_Estado(oRequest, dtFecha_Inicio, dtFecha_Fin);
                 factory.Close();
                 return lst;
             }
         }
         public List<ParametrosBE> Obtener_Tabla(ParametrosBE oRequest)
         {
             ChannelFactory<ICotizacionBL> factory = null;
             using (factory = new ChannelFactory<ICotizacionBL>(config.Context + "Cotizacion"))
             {
                 ICotizacionBL oParm = factory.CreateChannel();
                 List<ParametrosBE> lst = oParm.ObternerTipoDocumento(oRequest);
                 factory.Close();
                 return lst;
             }
         }
         public List<ParametrosBE> Obtener_Tabla(int tipo,ParametrosBE oRequest)
         {
             ChannelFactory<ICotizacionBL> factory = null;
             using (factory = new ChannelFactory<ICotizacionBL>(config.Context + "Cotizacion"))
             {
                 ICotizacionBL oParm = factory.CreateChannel();
                 List<ParametrosBE> lst = oParm.ObternerEspecializacion(tipo,oRequest);
                 factory.Close();
                 return lst;
             }
         }
         public List<CotizacionBE> Obtener_Cotizacion(CotizacionBE oRequest)
         {
             ChannelFactory<ICotizacionBL> factory = null;
             using (factory = new ChannelFactory<ICotizacionBL>(config.Context + "Cotizacion"))
             {
                 ICotizacionBL oParm = factory.CreateChannel();
                 List<CotizacionBE> lst = oParm.ObternerCotizacion(oRequest);
                 factory.Close();
                 return lst;
             }
         }
         public int Grabar_Cotizacion(int accion, List<CotizacionBE> oRequest)
         {
             ChannelFactory<ICotizacionBL> factory = null;
             using (factory = new ChannelFactory<ICotizacionBL>(config.Context + "Cotizacion"))
             {
                 ICotizacionBL oTarif = factory.CreateChannel();
                 int result = oTarif.GuardarCotizacion(accion, oRequest);
                 factory.Close();
                 return result;
             }
         }
         public int Aprobar_Cotizacion(CotizacionBE oRequest)
         {
             ChannelFactory<ICotizacionBL> factory = null;
             using (factory = new ChannelFactory<ICotizacionBL>(config.Context + "Cotizacion"))
             {
                 ICotizacionBL oTarif = factory.CreateChannel();
                 int result = oTarif.AprobarCotizacion(oRequest);
                 factory.Close();
                 return result;
             }
         }
         public int Rechazar_Cotizacion(CotizacionBE oRequest)
         {
             ChannelFactory<ICotizacionBL> factory = null;
             using (factory = new ChannelFactory<ICotizacionBL>(config.Context + "Cotizacion"))
             {
                 ICotizacionBL oTarif = factory.CreateChannel();
                 int result = oTarif.RechazarCotizacion(oRequest);
                 factory.Close();
                 return result;
             }
         }

         public void AnularCotizacion(CotizacionBE oRequest)
         {
             ChannelFactory<ICotizacionBL> factory = null;
             using (factory = new ChannelFactory<ICotizacionBL>(config.Context + "Cotizacion"))
             {
                 ICotizacionBL oTarif = factory.CreateChannel();
                 oTarif.AnularCotizacion(oRequest);
                 factory.Close();
               
             }
         }
    }
}
